(function(){
    const codeText= {
        "Network Error":"网络连接错误",
        "no params":"缺少查询参数"
    }
    function loadTypes(){
        return axios({
            url:"http://127.0.0.1:80/filmApi/loadTyps.php",
            method:"post",
        }).then(function({ data:{ result } }){
            return result;
        })
    }
    
    // 该方法的定义会导致该请求无法动态修改参数，所以不适合作为工具方法
    function loadFilmById(){
        return axios({
            url:"http://127.0.0.1/filmApi/loadFilmById.php?filmId=26636712",
            method:"get"
        }).then(function({ data }){
            return data;
        })
    }

    // 工具方法的参数动态化
    function loadFilmById2(filmId){
        return axios({
            // url:"http://127.0.0.1/filmApi/loadFilmById.php?filmId="+filmId,
            url:"http://127.0.0.1/filmApi/loadFilmById.php",
            method:"get",
            // 在请求发送时会自动完成 URL 参数的拼接
            params:{
                // key:value  key 请求参数名 value 请求参数值
                // filmId:filmId
                filmId
            }
        }).then(function({ data }){
            return data;
        })
    }

    // api 中的请求方法如果存在可以传递也可以不传递的参数建议提供参数默认值
    function loadFilmList(params={}){
        return axios({
            url:"http://127.0.0.1/filmApi/loadFilms.php",
            method:"get",
            params:params
        }).then(function({ data }){
            return data;
        })
    }

    function loadFilmListPostParams(params={}){
        return axios({
            url:"http://127.0.0.1/filmApi/loadFilms.php",
            method:"post",
            params:params
        }).then(function({ data }){
            return data;
        })
    }

    function loadFilmListPostData(data={}){
        return axios({
            url:"http://127.0.0.1/filmApi/loadFilms.php",
            method:"post",
            // `data` 是作为请求主体被发送的数据
            // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
            // 在没有设置 `transformRequest` 时，必须是以下类型之一：
            // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
            // - 浏览器专属：FormData, File, Blob
            // - Node 专属： Stream
            // data: data,
            data:data
        }).then(function({ data }){
            return data;
        })
    }

    function loadFilmListPostData2(data={}){
        let dataStr = "";
        for (let key in data) {
           let temp = key+"="+data[key]+"&";
           dataStr += temp;
        }
        dataStr = dataStr.substring(0,dataStr.length-1);
        console.log(dataStr);

        return axios({
            url:"http://127.0.0.1/filmApi/loadFilms.php",
            method:"post",
            // `headers` 是即将被发送的自定义请求头
            headers:{
                "Content-Type":"application/x-www-form-urlencoded"
            },
            data:dataStr
        }).then(function({ data }){
            return data;
        })
    }

    function loadFilmListPostDataQs(data={}){
        return axios({
            url:"http://127.0.0.1/filmApi/loadFilms.php",
            method:"post",
            data:Qs.stringify(data)
        }).then(function({ data }){
            return data;
        })
    }

    function updateFile(fd,callback=function(){}){
        return axios({
            url:"http://127.0.0.1/filmApi/uploadTest.php",
            method:"post",
            data:fd,
            // `onUploadProgress` 允许为上传处理进度事件
            // onUploadProgress: function (progressEvent) {
            // //    console.log(progressEvent);
            //    console.log(progressEvent.loaded/progressEvent.total);

            // },
            onUploadProgress:callback
        }).then(function({ data }){
            return data;
        })
    }

    window.api = {
        loadTypes,
        loadFilmById,
        loadFilmById2,
        loadFilmList,
        loadFilmListPostParams,
        loadFilmListPostData,
        loadFilmListPostData2,
        loadFilmListPostDataQs,
        updateFile
    }
    window.codeText = codeText;
})();